package org.study.screw.boot.util;

import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.*;
import cn.smallbun.screw.core.execute.DocumentationExecute;
import cn.smallbun.screw.core.process.ProcessConfig;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;

import javax.sql.DataSource;
import java.util.Collections;

/**
 * 作用描述
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2024年05月26日
 */
@Slf4j
@UtilityClass
public class ScrewUtils {
    public void configuration(DataSource dataSource) {
        // 文档引擎配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件路径
                .fileOutputDir("src/main/resources/docs")
                // 打开输出目录
                .openOutputDir(true)
                // 文件类型
                .fileType(EngineFileType.MD)
                // 使用模板
                .produceType(EngineTemplateType.freemarker)
                .build();
        // 生成配置
        ProcessConfig processConfig = ProcessConfig.builder()
                // 指定生成表名, null时表示生成所有表
                .designatedTableName(Collections.emptyList())
                // 指定表前缀
                .designatedTablePrefix(Collections.emptyList())
                // 指定表后缀
                .designatedTableSuffix(Collections.emptyList())
                .build();
        // Screw 配置
        Configuration config = Configuration.builder()
                .version("v1.0.0")
                .description("数据库设计文档生成")
                .dataSource(dataSource)
                .engineConfig(engineConfig)
                .produceConfig(processConfig)
                .build();
        new DocumentationExecute(config).execute();
    }
}
